package com.shuqi.common.utils;

import java.io.UnsupportedEncodingException;
import java.lang.reflect.Type;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.List;

import org.json.JSONException;
import org.json.JSONObject;

import android.text.TextUtils;

import com.google.gson.Gson;

/**
 * JSON转换工具
 * 
 * @author li.li
 *
 */
public class JsonUtils {

	/**
	 * JSON转对象
	 * @param json JSON字符串
	 * @param clazz 对象类型
	 * @return 对象
	 */
	public static <T> T fromJson(String json, Class<T> clazz) {
		Gson gson = new Gson();
		T obj = gson.fromJson(json, clazz);

		return obj;
	}

	/**
	 * JSON转对象
	 * 
	 * Type type = new TypeToken<List<类>>() {}.getType();
	 * 
	 * @param json JSON字符串
	 * @param Type 对象类型
	 * @return 对象
	 */
	public static <T> List<T> fromJson(String json, Type typeOfT) {

		Gson gson = new Gson();
		List<T> obj = gson.fromJson(json, typeOfT);

		return obj;
	}

	/**
	 * 对象对JSON
	 * @param obj 对象
	 * @return json字符串
	 */
	public static <T> String toJson(T obj) {
		Gson gson = new Gson();
		String json = gson.toJson(obj);

		return json;
	}
	/**
	 * 从json对象中获取Key对应的字符串
	 * @param jsonObject
	 * @param key
	 * @return
	 */
    public static String getStringFromJsonObj(JSONObject jsonObject, String key) {
        if (jsonObject != null && !TextUtils.isEmpty(key)) {
            try {
                String value = jsonObject.getString(key);
                if(!TextUtils.isEmpty(value)){
                    return URLDecoder.decode(value, "UTF-8");
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return "";
    }

    /***
     * Encode输入的内容，编码：UTF-8
     * @param value
     * @return
     */
    public static String encodeString(String value) {
        if (!TextUtils.isEmpty(value)) {
            try {
                return URLEncoder.encode(value, "UTF-8");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return value;
    }

}
